라이선스 (License)
1. 개요
라이선스란 저작권자(권리자)가 타인에게 자신의 저작물을 특정 조건하에 사용할 수 있도록 허락하는 법적 권한 부여 계약을 의미한다.
많은 이들이 저작권(Copyright)과 라이선스를 혼동하지만, 저작권은 창작물에 대해 법적으로 당연히 부여되는 '배타적 권리'인 반면, 라이선스는 그 권리를 가진 사람이 타인에게 '사용 허가'를 내주는 행위이다. 소프트웨어 개발 환경에서 라이선스가 필요한 이유는 코드의 재사용성과 협업을 촉진하면서도, 창작자의 권리를 보호하고 책임 소재(면책 조항)를 명확히 하기 위함이다.
2. 라이선스의 기본 작동 원리
라이선스는 기본적으로 권리자와 이용자 사이의 계약 구조를 가진다. 권리자는 라이선스 문서(License Agreement)를 통해 이용자가 소프트웨어를 어떻게 사용할 수 있는지, 그리고 어떤 행위를 해서는 안 되는지를 규정한다.
- 허용 범위(Scope): 복제, 수정, 배포, 상업적 이용 등 이용자가 수행할 수 있는 행위의 범위.
- 제한 사항(Restriction): 소스 코드 수정 금지, 특정 브랜드 로고 사용 금지, 재배포 시 원저작자 표기 의무 등.
| 구분 |
독점 라이선스 (Exclusive License) |
비독점 라이선스 (Non-exclusive License) |
| 정의 |
특정 이용자에게만 독점적 사용권을 부여 |
여러 이용자에게 동시에 사용권을 부여 |
| 권리 관계 |
권리자 본인조차 사용이 제한될 수 있음 |
권리자와 다른 이용자가 동시에 사용 가능 |
| 특징 |
희소성이 높으며 일반적으로 비용이 매우 비쌈 |
범용 소프트웨어(MS Office, Adobe 등)의 일반적 형태 |
| 배타성 |
제3자의 사용을 법적으로 금지할 수 있음 |
타인의 사용을 금지할 권한이 없음 |
3. 소프트웨어 라이선스의 분류
소프트웨어 라이선스는 소스 코드의 공개 여부와 비용 지불 방식, 재배포 조건에 따라 크게 네 가지 흐름으로 분류된다.
| 분류 |
소스 코드 공개 |
비용 |
특징 |
| 독점 소프트웨어 |
비공개 |
유료 |
저작권자가 모든 권리를 가지며, 사용자는 실행 권한만 구매함 |
| 프리웨어 |
비공개/공개 |
무료 |
무료로 사용 가능하나, 수정 및 재배포는 제한되는 경우가 많음 |
| 쉐어웨어 |
비공개 |
부분 유료 |
일정 기간/기능을 무료로 제공한 후 결제를 유도하는 방식 |
| 오픈소스 소프트웨어 |
공개 |
무료/유료 |
소스 코드가 공개되어 있으며, 특정 라이선스 조건 준수 시 자유로운 수정/배포 가능 |
4. 오픈소스 라이선스의 유형과 특징
오픈소스 라이선스는 크게 이용자의 자유도를 극대화한 허용적(Permissive) 라이선스와, 수정본의 공개 의무를 강제하는 카피레프트(Copyleft) 라이선스로 나뉜다.
4.1 허용적 라이선스 (Permissive License)
최소한의 제약(주로 저작권 고지)만 요구하며, 수정된 코드를 독점 소프트웨어로 만들어 판매하는 것을 허용한다.
* MIT License: 매우 간결하며, 저작권 표시만 하면 상업적 이용 및 수정이 완전히 자유롭다.
* Apache License 2.0: MIT와 유사하나, 특허권 부여에 관한 명시적 조항이 포함되어 기업 환경에서 선호된다.
* BSD License: MIT와 유사하며, 매우 엄격한 최소 조건만을 요구한다.
4.2 카피레프트 라이선스 (Copyleft License)
저작권을 이용하여 저작물의 자유로운 이용과 수정을 보장하는 개념으로, 파생 저작물 역시 동일한 라이선스로 공개해야 한다는 강제성을 띤다.
* GPL (General Public License): 가장 대표적인 카피레프트 라이선스. GPL 코드를 사용하여 개발한 소프트웨어를 배포할 경우, 전체 소스 코드를 GPL로 공개해야 한다.
* LGPL (Lesser GPL): 라이브러리 결합 시, 라이브러리 자체를 수정하지 않고 단순히 링크(Link)하여 사용하는 경우에는 전체 코드를 공개할 의무가 없다.
오픈소스 라이선스 비교표
| 라이선스 |
저작권 고지 의무 |
소스 코드 공개 의무 |
수정본의 라이선스 변경 |
특허권 명시 |
| MIT |
O |
X |
가능 |
X |
| Apache 2.0 |
O |
X |
가능 |
O |
| BSD |
O |
X |
가능 |
X |
| GPL |
O |
O (배포 시) |
불가능 (GPL 유지) |
O |
5.1 듀얼 라이선스 (Dual Licensing)
하나의 소프트웨어에 대해 두 가지 이상의 라이선스를 동시에 제공하는 방식이다. 주로 오픈소스 모델과 상업적 모델을 병행할 때 사용한다.
* 작동 방식: "무료로 쓰고 싶다면 GPL(코드 공개 의무)을 따르고, 코드를 숨기고 상업적으로 이용하고 싶다면 비용을 지불하고 상업용 라이선스를 구매하라"는 전략이다.
* 대표 사례: MySQL, Qt 등이 이 모델을 통해 수익을 창출한다.
5.2 SaaS와 AGPL (Affero GPL)
전통적인 GPL은 소프트웨어를 '배포(Distribution)'할 때만 소스 공개 의무가 발생한다. 하지만 클라우드 서비스(SaaS) 환경에서는 코드를 서버에서 실행하고 결과만 네트워크로 전송하므로 '배포'로 간주되지 않아 소스 공개 의무를 회피하는 루프홀(Loophole)이 발생했다.
이를 보완하기 위해 등장한 것이 AGPL (Affero GPL)이다. AGPL은 네트워크를 통해 서비스를 제공하는 것만으로도 '배포'로 간주하여, 해당 서비스를 이용하는 사용자에게 소스 코드를 공개하도록 강제한다. 이는 클라우드 기반 오픈소스 프로젝트의 공정성을 유지하고, 서버 측 수정 사항이 커뮤니티에 환원되도록 보장하기 위한 장치이다.
6.1 라이선스 호환성 매트릭스
서로 다른 라이선스를 가진 라이브러리를 하나의 프로젝트에서 결합할 때, 두 라이선스의 조건이 충돌하지 않아야 한다. 아래 표는 결합 후 결과물이 따라야 할 라이선스를 나타낸다.
| 결합 대상 $\rightarrow$ |
MIT / Apache |
LGPL |
GPL |
AGPL |
| MIT / Apache |
MIT/Apache |
LGPL |
GPL |
AGPL |
| LGPL |
LGPL |
LGPL |
GPL |
AGPL |
| GPL |
GPL |
GPL |
GPL |
AGPL |
| AGPL |
AGPL |
AGPL |
AGPL |
AGPL |
주의 사항:
* 결과물 라이선스: 결합 시 일반적으로 가장 엄격한 라이선스(Strong Copyleft)의 조건을 따라야 한다.
* 버전 호환성: Apache 2.0 라이선스는 GPLv3와는 호환되지만, GPLv2와는 호환되지 않는다는 점에 유의해야 한다.
6.2 준수 방법 및 위반 시 영향
- 고지 방법: 소프트웨어 내
LICENSE 파일을 포함하거나, 소스 코드 상단에 저작권 문구를 명시해야 한다.
- 위반 시 리스크:
- 법적 분쟁: 저작권 침해 소송으로 인한 손해배상 청구.
- 강제 공개: GPL 위반 시, 기업의 핵심 영업 비밀이 담긴 소스 코드를 강제로 공개해야 하는 상황 발생.
- 배포 중단: 법원 판결에 의해 서비스 및 제품 판매 중단 조치.
6.3 라이선스 관리 도구
실무에서 수많은 의존성 라이브러리의 라이선스를 수동으로 확인하는 것은 불가능에 가깝다. 이를 위해 다음과 같은 자동화 도구를 활용한다.
* SCA(Software Composition Analysis) 도구: Snyk, WhiteSource(Mend), FOSSology, Black Duck 등이 있으며, 프로젝트 내 사용된 오픈소스의 라이선스를 스캔하고 취약점을 분석한다.
* 패키지 매니저 기반 도구: npm-license-crawler와 같이 특정 언어 생태계에서 의존성 라이선스 목록을 추출하는 도구를 사용한다.
7. 라이선스 선택 및 적용 가이드
7.1 선택 기준 및 플로우차트
[라이선스 선택 플로우차트]
1. 수정본의 소스 코드를 반드시 공개해야 하는가?
- $\rightarrow$ No: (2번으로)
- $\rightarrow$ Yes: (3번으로)
2. 특허권 관련 명시적 보호가 필요한가?
- $\rightarrow$ No: $\Rightarrow$ MIT License 추천
- $\rightarrow$ Yes: $\Rightarrow$ Apache License 2.0 추천
3. 네트워크 서비스(SaaS) 제공 시에도 공개를 강제해야 하는가?
- $\rightarrow$ No: $\Rightarrow$ GPL v3 추천
- $\rightarrow$ Yes: $\Rightarrow$ AGPL 추천
| 프로젝트 목적 |
추천 라이선스 |
이유 |
| 최대한의 확산과 이용 |
MIT, Apache 2.0 |
제약이 거의 없어 누구나 쉽게 채택 가능 |
| 기업의 특허 보호 필요 |
Apache 2.0 |
특허 라이선스 부여 조항이 명시되어 안전함 |
| 공동체 기여 강제 (상생) |
GPL v3 |
수정본의 공개를 강제하여 생태계 확장 |
| SaaS 서비스의 공정성 |
AGPL |
네트워크 서비스 제공 시에도 코드 공개 유도 |
7.2 적용 예시
1) LICENSE 파일 작성 (MIT 예시)
파일명: LICENSE.txt
Copyright (c) [연도] [저작권자 이름]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
2) 소스 코드 상단 고지 문구
/**
* @license
* Copyright (c) 2024 AI Assistant.
* Licensed under the MIT License.
* See LICENSE file in the project root for full license information.
*/
function initializeApp() {
// Application logic here
}
3) 오픈소스 사용 고지문 (Third-party Notice 예시)
제품의 '설정' 또는 '오픈소스 라이선스' 메뉴에 다음과 같이 명시한다.
Open Source Notice
본 제품은 다음의 오픈소스 소프트웨어를 사용하고 있습니다:
- React: MIT License (Copyright (c) Meta Platforms, Inc.)
- Lodash: MIT License (Copyright (c) JS Foundation)
- Linux Kernel: GPL v2 (Copyright (c) Linus Torvalds et al.)
각 라이선스의 상세 내용은 제품 내 포함된 LICENSE 파일을 참조하시기 바랍니다.
# 라이선스 (License)
## 1. 개요
라이선스란 저작권자(권리자)가 타인에게 자신의 저작물을 특정 조건하에 사용할 수 있도록 허락하는 법적 권한 부여 계약을 의미한다.
많은 이들이 저작권(Copyright)과 라이선스를 혼동하지만, 저작권은 창작물에 대해 법적으로 당연히 부여되는 '배타적 권리'인 반면, 라이선스는 그 권리를 가진 사람이 타인에게 '사용 허가'를 내주는 행위이다. 소프트웨어 개발 환경에서 라이선스가 필요한 이유는 코드의 재사용성과 협업을 촉진하면서도, 창작자의 권리를 보호하고 책임 소재(면책 조항)를 명확히 하기 위함이다.
## 2. 라이선스의 기본 작동 원리
라이선스는 기본적으로 권리자와 이용자 사이의 계약 구조를 가진다. 권리자는 라이선스 문서(License Agreement)를 통해 이용자가 소프트웨어를 어떻게 사용할 수 있는지, 그리고 어떤 행위를 해서는 안 되는지를 규정한다.
* **허용 범위(Scope):** 복제, 수정, 배포, 상업적 이용 등 이용자가 수행할 수 있는 행위의 범위.
* **제한 사항(Restriction):** 소스 코드 수정 금지, 특정 브랜드 로고 사용 금지, 재배포 시 원저작자 표기 의무 등.
### 독점 라이선스 vs 비독점 라이선스 비교
| 구분 | 독점 라이선스 (Exclusive License) | 비독점 라이선스 (Non-exclusive License) |
| :--- | :--- | :--- |
| **정의** | 특정 이용자에게만 독점적 사용권을 부여 | 여러 이용자에게 동시에 사용권을 부여 |
| **권리 관계** | 권리자 본인조차 사용이 제한될 수 있음 | 권리자와 다른 이용자가 동시에 사용 가능 |
| **특징** | 희소성이 높으며 일반적으로 비용이 매우 비쌈 | 범용 소프트웨어(MS Office, Adobe 등)의 일반적 형태 |
| **배타성** | 제3자의 사용을 법적으로 금지할 수 있음 | 타인의 사용을 금지할 권한이 없음 |
## 3. 소프트웨어 라이선스의 분류
소프트웨어 라이선스는 소스 코드의 공개 여부와 비용 지불 방식, 재배포 조건에 따라 크게 네 가지 흐름으로 분류된다.
| 분류 | 소스 코드 공개 | 비용 | 특징 |
| :--- | :---: | :---: | :--- |
| **독점 소프트웨어** | 비공개 | 유료 | 저작권자가 모든 권리를 가지며, 사용자는 실행 권한만 구매함 |
| **프리웨어** | 비공개/공개 | 무료 | 무료로 사용 가능하나, 수정 및 재배포는 제한되는 경우가 많음 |
| **쉐어웨어** | 비공개 | 부분 유료 | 일정 기간/기능을 무료로 제공한 후 결제를 유도하는 방식 |
| **오픈소스 소프트웨어** | 공개 | 무료/유료 | 소스 코드가 공개되어 있으며, 특정 라이선스 조건 준수 시 자유로운 수정/배포 가능 |
## 4. 오픈소스 라이선스의 유형과 특징
오픈소스 라이선스는 크게 이용자의 자유도를 극대화한 **허용적(Permissive)** 라이선스와, 수정본의 공개 의무를 강제하는 **카피레프트(Copyleft)** 라이선스로 나뉜다.
### 4.1 허용적 라이선스 (Permissive License)
최소한의 제약(주로 저작권 고지)만 요구하며, 수정된 코드를 독점 소프트웨어로 만들어 판매하는 것을 허용한다.
* **MIT License:** 매우 간결하며, 저작권 표시만 하면 상업적 이용 및 수정이 완전히 자유롭다.
* **Apache License 2.0:** MIT와 유사하나, 특허권 부여에 관한 명시적 조항이 포함되어 기업 환경에서 선호된다.
* **BSD License:** MIT와 유사하며, 매우 엄격한 최소 조건만을 요구한다.
### 4.2 카피레프트 라이선스 (Copyleft License)
저작권을 이용하여 저작물의 자유로운 이용과 수정을 보장하는 개념으로, 파생 저작물 역시 동일한 라이선스로 공개해야 한다는 강제성을 띤다.
* **GPL (General Public License):** 가장 대표적인 카피레프트 라이선스. GPL 코드를 사용하여 개발한 소프트웨어를 배포할 경우, 전체 소스 코드를 GPL로 공개해야 한다.
* **LGPL (Lesser GPL):** 라이브러리 결합 시, 라이브러리 자체를 수정하지 않고 단순히 링크(Link)하여 사용하는 경우에는 전체 코드를 공개할 의무가 없다.
### 오픈소스 라이선스 비교표
| 라이선스 | 저작권 고지 의무 | 소스 코드 공개 의무 | 수정본의 라이선스 변경 | 특허권 명시 |
| :--- | :---: | :---: | :---: | :---: |
| **MIT** | O | X | 가능 | X |
| **Apache 2.0** | O | X | 가능 | O |
| **BSD** | O | X | 가능 | X |
| **GPL** | O | O (배포 시) | 불가능 (GPL 유지) | O |
## 5. 듀얼 라이선스 및 최신 SaaS 라이선스
### 5.1 듀얼 라이선스 (Dual Licensing)
하나의 소프트웨어에 대해 두 가지 이상의 라이선스를 동시에 제공하는 방식이다. 주로 오픈소스 모델과 상업적 모델을 병행할 때 사용한다.
* **작동 방식:** "무료로 쓰고 싶다면 GPL(코드 공개 의무)을 따르고, 코드를 숨기고 상업적으로 이용하고 싶다면 비용을 지불하고 상업용 라이선스를 구매하라"는 전략이다.
* **대표 사례:** MySQL, Qt 등이 이 모델을 통해 수익을 창출한다.
### 5.2 SaaS와 AGPL (Affero GPL)
전통적인 GPL은 소프트웨어를 '배포(Distribution)'할 때만 소스 공개 의무가 발생한다. 하지만 클라우드 서비스(SaaS) 환경에서는 코드를 서버에서 실행하고 결과만 네트워크로 전송하므로 '배포'로 간주되지 않아 소스 공개 의무를 회피하는 루프홀(Loophole)이 발생했다.
이를 보완하기 위해 등장한 것이 **AGPL (Affero GPL)**이다. AGPL은 네트워크를 통해 서비스를 제공하는 것만으로도 '배포'로 간주하여, 해당 서비스를 이용하는 사용자에게 소스 코드를 공개하도록 강제한다. 이는 클라우드 기반 오픈소스 프로젝트의 공정성을 유지하고, 서버 측 수정 사항이 커뮤니티에 환원되도록 보장하기 위한 장치이다.
## 6. 라이선스 호환성 및 준수
### 6.1 라이선스 호환성 매트릭스
서로 다른 라이선스를 가진 라이브러리를 하나의 프로젝트에서 결합할 때, 두 라이선스의 조건이 충돌하지 않아야 한다. 아래 표는 결합 후 결과물이 따라야 할 라이선스를 나타낸다.
| 결합 대상 $\rightarrow$ | MIT / Apache | LGPL | GPL | AGPL |
| :--- | :---: | :---: | :---: | :---: |
| **MIT / Apache** | MIT/Apache | LGPL | GPL | AGPL |
| **LGPL** | LGPL | LGPL | GPL | AGPL |
| **GPL** | GPL | GPL | GPL | AGPL |
| **AGPL** | AGPL | AGPL | AGPL | AGPL |
**주의 사항:**
* **결과물 라이선스:** 결합 시 일반적으로 가장 엄격한 라이선스(Strong Copyleft)의 조건을 따라야 한다.
* **버전 호환성:** Apache 2.0 라이선스는 GPLv3와는 호환되지만, GPLv2와는 호환되지 않는다는 점에 유의해야 한다.
### 6.2 준수 방법 및 위반 시 영향
* **고지 방법:** 소프트웨어 내 `LICENSE` 파일을 포함하거나, 소스 코드 상단에 저작권 문구를 명시해야 한다.
* **위반 시 리스크:**
1. **법적 분쟁:** 저작권 침해 소송으로 인한 손해배상 청구.
2. **강제 공개:** GPL 위반 시, 기업의 핵심 영업 비밀이 담긴 소스 코드를 강제로 공개해야 하는 상황 발생.
3. **배포 중단:** 법원 판결에 의해 서비스 및 제품 판매 중단 조치.
### 6.3 라이선스 관리 도구
실무에서 수많은 의존성 라이브러리의 라이선스를 수동으로 확인하는 것은 불가능에 가깝다. 이를 위해 다음과 같은 자동화 도구를 활용한다.
* **SCA(Software Composition Analysis) 도구:** Snyk, WhiteSource(Mend), FOSSology, Black Duck 등이 있으며, 프로젝트 내 사용된 오픈소스의 라이선스를 스캔하고 취약점을 분석한다.
* **패키지 매니저 기반 도구:** `npm-license-crawler`와 같이 특정 언어 생태계에서 의존성 라이선스 목록을 추출하는 도구를 사용한다.
## 7. 라이선스 선택 및 적용 가이드
### 7.1 선택 기준 및 플로우차트
**[라이선스 선택 플로우차트]**
1. **수정본의 소스 코드를 반드시 공개해야 하는가?**
- $\rightarrow$ **No:** (2번으로)
- $\rightarrow$ **Yes:** (3번으로)
2. **특허권 관련 명시적 보호가 필요한가?**
- $\rightarrow$ **No:** $\Rightarrow$ **MIT License** 추천
- $\rightarrow$ **Yes:** $\Rightarrow$ **Apache License 2.0** 추천
3. **네트워크 서비스(SaaS) 제공 시에도 공개를 강제해야 하는가?**
- $\rightarrow$ **No:** $\Rightarrow$ **GPL v3** 추천
- $\rightarrow$ **Yes:** $\Rightarrow$ **AGPL** 추천
| 프로젝트 목적 | 추천 라이선스 | 이유 |
| :--- | :--- | :--- |
| **최대한의 확산과 이용** | MIT, Apache 2.0 | 제약이 거의 없어 누구나 쉽게 채택 가능 |
| **기업의 특허 보호 필요** | Apache 2.0 | 특허 라이선스 부여 조항이 명시되어 안전함 |
| **공동체 기여 강제 (상생)** | GPL v3 | 수정본의 공개를 강제하여 생태계 확장 |
| **SaaS 서비스의 공정성** | AGPL | 네트워크 서비스 제공 시에도 코드 공개 유도 |
### 7.2 적용 예시
**1) LICENSE 파일 작성 (MIT 예시)**
파일명: `LICENSE.txt`
```text
Copyright (c) [연도] [저작권자 이름]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
```
**2) 소스 코드 상단 고지 문구**
```javascript
/**
* @license
* Copyright (c) 2024 AI Assistant.
* Licensed under the MIT License.
* See LICENSE file in the project root for full license information.
*/
function initializeApp() {
// Application logic here
}
```
**3) 오픈소스 사용 고지문 (Third-party Notice 예시)**
제품의 '설정' 또는 '오픈소스 라이선스' 메뉴에 다음과 같이 명시한다.
> **Open Source Notice**
>
> 본 제품은 다음의 오픈소스 소프트웨어를 사용하고 있습니다:
> - **React**: MIT License (Copyright (c) Meta Platforms, Inc.)
> - **Lodash**: MIT License (Copyright (c) JS Foundation)
> - **Linux Kernel**: GPL v2 (Copyright (c) Linus Torvalds et al.)
>
> 각 라이선스의 상세 내용은 제품 내 포함된 LICENSE 파일을 참조하시기 바랍니다.